package com.itheima.demo;

import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * xxl-job 任务类
 */
@Component
public class HelloJobDemo {

    //需要写xxl-job调度中心   执行器下面的任务中的  JobHandler值  项目启动后，会以Cron表达为准 周期性执行该方法
    //如果需要计算的任务量特别大  建议使用分片广播策略   每个客户端只计算部分数据
    @XxlJob("itheima-demo-jobhandler")
    public void hello(){

        System.out.println("任务执行了"+new Date());

        int shardIndex = XxlJobHelper.getShardIndex();//当前分片数  从0开始
        int shardTotal = XxlJobHelper.getShardTotal();//总分片数   总实例数


        List<Integer> list = new ArrayList<>();//模拟用户的id
        for(int i=0;i<100;i++){
            list.add(i);
        }
        for (Integer integer : list) {
            if(integer % shardTotal == shardIndex){//由当前分片还处理  该用户
                System.out.println("任务执行了  "+new Date() +" shardIndex:"+shardIndex+"   shardTotal:"+shardTotal +"  userid:"+integer);
            }
        }

    }


}
